Digital video capabilities can be incorporated into a wide range of devices, including digital televisions, digital direct broadcast systems, wireless communication devices, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, digital cameras, digital recording devices, video gaming devices, video game consoles, cellular or satellite radio telephones, and the like. Digital video devices implement video compression techniques, such as MPEG-2, MPEG-4, or H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), to transmit and receive digital video more efficiently. Video compression techniques perform spatial and temporal prediction to reduce or remove redundancy inherent in video sequences.
In video coding, video compression generally includes spatial prediction, motion estimation and motion compensation. Intra-coding relies on spatial prediction to reduce or remove spatial redundancy between video blocks within a given video frame. Inter-coding relies on temporal prediction to reduce or remove temporal redundancy between video blocks of successive video frames of a video sequence. For inter-coding, a video encoder performs motion estimation to track the movement of matching video blocks between two or more adjacent frames. Motion estimation generates motion vectors, which indicate the displacement of video blocks relative to corresponding prediction video blocks in one or more reference frames. Motion compensation uses the motion vector to generate the prediction video block from a reference frame. After motion compensation, a residual video block is formed by subtracting the prediction video block from the original video block to be coded.
The video encoder may apply transform, quantization and run-length coding processes to further reduce the bit rate associated with communication of the residual block. In run-length coding, a sequence of coefficients may be coded using a run value, a level value, and a sign value. Run-length coding algorithms may scan through transform coefficients of a video block, e.g., in a zig-zag manner, in order to identify sequences of zeros that can be coded together. The run value identifies a sequence of zeros, and the level value identifies the value of the coefficient following the sequence of zeros. The level value may be presumed to be 1 in some cases, e.g., when the magnitude of any coefficient is limited to values of −1, 0 or 1. The sign value identifies the sign associated with the level value.
In some cases, a variable length coding (VLC) table may be used to code different run values in a manner that promotes coding efficiency, and different VLC tables may be used for different video content. A video decoder performs inverse operations to reconstruct the coefficients, and then inverse transforms the coefficients. The video decoder then decodes the video information based on the motion information and residual information associated with video blocks.
Some video coding makes use of scalable techniques. For example, scalable video coding (SVC) refers to video coding in which a base layer and one or more scalable enhancement layers are used. For SVC, a base layer typically carries video data with a base level of quality. One or more enhancement layers carry additional video data to support higher spatial, temporal and/or SNR levels. The base layer may be transmitted in a manner that is more reliable than the transmission of enhancement layers. For example, the most reliable portions of a modulated signal may be used to transmit the base layer, while less reliable portions of the modulated signal may be used to transmit the enhancement layers. Enhancement layers may define different types of coefficients, referred to as significant coefficients and refinement coefficients.